AWS BackupでVSSスナップショットに失敗した際に確認する点
困っていた内容
AWS BackupでWindows Volume Shadow Copy Services(VSS)のバックアップを試みたものの、ステータスが「問題ありで完了」と表示され、VSSスナップショットが取得できませんでした。
AWS Backupのバックアップジョブのエラー内容は以下の通りでした。
WindowsVSS Backup attempt failed because of insufficient privileges to perform this operation.
前提
プライベートサブネット内に配置されたEC2インスタンスが、VPCエンドポイントを介して各AWSサービスと通信する環境を想定しています。また、VSSに対応したアプリケーションがインストールされていることも前提とします。
VSSスナップショットの取得プロセスは、AWS Backupがバックアップを開始すると、Systems Manager Run CommandでEC2に対して、SSMドキュメントのAWSEC2-CreateVssSnapshot
を実行し、スナップショットを取得する流れです。
確認すべき点
エラーメッセージをもとに問題を解決するのが一般的ですが、今回はVSSスナップショットを実行する上で、最低限インフラ側で確認すべきポイントをまとめました。
以下にそれぞれのポイントについて説明します。
- マネージドインスタンスであるか
- EC2に、VSSスナップショットのための権限が存在するか
- VSSのコンポーネントがインストール済みか
- AWS BackupでWindows VSSを有効化しているか
- VPCエンドポイントが存在しているか
マネージドインスタンスであるか
対象のEC2がマネージドインスタンスであるか確認します。
AWSマネジメントコンソールのSSMのフリートマネージャーから、[ノードの状態]で確認できます。
[実行中]であれば、マネージドインスタンスですが、[停止しました]であれば、アンマネージドインスタンスです。
アンマネージドインスタンスの場合は、以下の記事を参考に環境を確認・修正します。
確認すべき主な項目は以下の通りです。
- SSMエージェントが起動しているか
- EC2インスタンスには、SSM実行権限があるか
- SSMへの通信経路として、VPCエンドポイントが存在しているか
- セキュリティグループのアウトバウンドでHTTPSを許可しているか
EC2にVSSスナップショットの権限が存在するか
SSM Run Commandを使用して、SSMドキュメントのAWSEC2-CreateVssSnapshot
を実行するためには、以下のIAMポリシーがEC2インスタンスに適用されている必要があります。
追記:マネージドポリシーAWSEC2VssSnapshotPolicy
が用意されたので、手動で作成するのではなくこれを適用しましょう。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": [ "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*::image/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstanceAttribute", "ec2:CreateSnapshot", "ec2:CreateSnapshots", "ec2:CreateImage", "ec2:DescribeImages", "ec2:DescribeSnapshots" ], "Resource": "*" } ] }
IAMポリシーの権限を制限したい場合は、以下のドキュメントを参照してください。
VSSのコンポーネントがインストール済みか
VSSスナップショットを実行するには、EC2に VSS コンポーネントをインストールする必要があります。
VSSスナップショットを取得する方法は、AWS Backupだけでなく、Amazon Data Lifecycle Manager やSSM Run CommandなどのAWSサービスで取得する方法があります。
各AWSサービスによってインストール方法は異なりますが、AWS Backupの場合、手動でインストールします。
インストール方法とインストール済みかどうかの確認手順は、以下をご参照下さい。
AWS BackupでWindows VSSを有効化しているか
AWS Backupでバックアップを実行する際は、オンデマンドやバックアッププランなどの方法がありますが、どの方法を使用してもVSSの設定を有効にする必要があります。
以下にチェックをします。
VPCエンドポイントが存在しているか
以下のVPCエンドポイントが必要です。
- com.amazonaws.region.ssm
- com.amazonaws.region.ec2messages
- com.amazonaws.region.ssmmessages
- com.amazonaws.region.ec2
- com.amazonaws.region.s3
マネージドインスタンスが存在する場合、以下の3つのVPCエンドポイントは作成済みのはずです。
- com.amazonaws.region.ssm
- com.amazonaws.region.ec2messages
- com.amazonaws.region.ssmmessages
AWS BackupでVSSスナップショットを作成する場合、上記に加え、EC2サービスへの通信経路として、以下のVPCエンドポイントが必要です。
com.amazonaws.region.ec2
EC2 VPCエンドポイントが存在しない場合、EBSボリュームの呼び出しが失敗し、SSMコマンドの実行が失敗する原因となります。
今回のエラーは、このエンドポイントが不足していたために発生しました。
AWS BackupやAmazon EC2(および Amazon EBS)のAWSドキュメントには、EC2エンドポイントが必要の記載がなく、SSMのドキュメントにのみ記載があったため、注意が必要です。
SSM の Runcommand を利用して、VSSのコンポーネントをインストールする場合、インストールに必要なマニフェストファイルを取得するため、SSM エージェントから AWS が管理する S3 バケットにアクセスできる必要があります。そのため、S3のVPCエンドポイントも必要です。
他の要件
他にシステム要件やサポートされていないEC2インスタンスタイプ、サポートされているOSバージョンなどもありますので、詳細は以下をご参考ください。